package com.gz.pass.builder;

/**
 * @author juice-gz
 * date 2022-01-20
 * describe 建造者模式
 */
public class BuilderTest {
    public static void main(String[] args) {
        /**
         * Builder 模式：用于创建复杂对象，分步骤各司其职
         * 1.BuilderTest：测试类
         * 2.Builder:建造抽象
         * 3.PersonBuilder：具体建造者
         * 4.Person：产品
         * 5.Director：管理者
         *优点：封装性好，构建和使用分离，扩展性好，有利于解耦，风险把控
         *缺点：内部结构复杂，后期维护风险大，修改麻烦
         */
        Builder builder =new PersonBuilder();
        Director director =new Director(builder);
        Person person = director.personConstruct();
        person.showPerson();

    }
}
